
class EnvioVagaService {

    static transactional = true

    /*
     * Verifica se o estagiário tem o peril da vaga, ou seja, se na formação ele tem cadastrado um curo que esta na vaga.
     */
    boolean possuiPerfilVaga(Vaga vaga, Estagiario estagiario) {
        def verificaPerfil = Vaga.executeQuery("SELECT v FROM Vaga v, CursoVaga cv, Estagiario e, Formacao f WHERE v.id = cv.vaga.id AND e.id = f.estagiario.id AND cv.curso.id = f.curso.id AND v.id=? AND e.id = ?",[vaga.id, estagiario.id]);
        if(verificaPerfil){
            return true;
        }else{
            return false;
        }
    }

    /*
     * Verifica se o estagiário ja enviou curricula para a vaga.
     */
    boolean curriculoJaEnviado(Vaga vaga, Estagiario estagiario){
        EnvioVaga envioVaga = EnvioVaga.findByEstagiarioAndVaga(estagiario, vaga);
        if(envioVaga){
            return true;
        }else{
            return false;
        }
    }


    /*
     * Verifica se já existe solicitação para o curriculo enviado.
     */
    boolean possuiSolicitacaoVaga(Estagiario estagiario, Vaga vaga){
        Solicitacao solicitacao = Solicitacao.findByEstagiarioAndVaga(estagiario, vaga);
        if(solicitacao){
            return true;
        }else{
            return false;
        }
    }

    /*
     * Verifica a formação do estagiário quando envia o curriculo para a vaga.
     */
    boolean verificaCargaHorariaFormacao(Vaga vaga, Estagiario estagiario){
        def formacao = Formacao.findAllByEstagiario(estagiario);
        def test = false;
        if(formacao){
            for(Formacao f: formacao){
                if(f?.nivelEnsino?.descricao == 'EJA'){
                    if(vaga.chSemanal < 20){
                        test = true;
                    }else{
                        test = false;
                    }
                }else{
                    test = true;
                }
            }
        }
        
        return test;
    }

    /*
     * Verifica se o estagiário possui formação.
     */
    boolean possuiFormacao(Estagiario estagiario){
        Formacao formacao = Formacao.findByEstagiario(estagiario);
        if(formacao){
            return true;
        }else{
            return false;
        }
    }

}

